题意:给出一个树的叶子节点间的距离,求树的边权和
由于所有点均为叶子节点,很显然点$3$是从点$1$到点$2$的路径上分叉出来的
设蓝色部分长度为$len$,那么答案就是$g(1,2)+len$。$len$怎么求呢?显然,$len =\frac{g(1,3)+g(2,3)-g(1,2)}{2}$。
$n>3$的情况也同理。枚举$i$,看看点$n$是不是从点$1$~$i$的路径上分叉出来的,求出的最小$len$就是要加到答案里面去的。
如果认为点$4$是从$1$~$2$的路径上分叉出来的,答案就会加上红色部分的长度。但是红色部分长度显然有一部分是多余的。只有认为点$4$是从$1$~$3$的路径上分叉出来的,才能加上正确答案(也就是蓝色部分)。所以对于当前点我们要枚举是从那一条路径中分叉出来的,取最小值。
证明:因为在最小的情况下,不会有任何冲突的地方,这样加点,可以保证时时刻刻没有冲突,而没有冲突的情况下答案是唯一的
1 |
|